package com.andy.blog.admin.service;

import com.andy.blog.admin.dto.SysRoleDTO;
import com.andy.blog.admin.dto.SysUserDTO;
import com.andy.blog.common.core.domain.entity.SysRole;
import com.andy.blog.common.page.PageUtilsDTO;
import com.andy.blog.dal.vo.SysRoleVO;
import com.andy.blog.dal.vo.SysUserRoleVO;

import java.util.List;

/**
 * Created by andy on 2023-04-15 9:42
 */
public interface SysRoleBusService {

    /**
     * 分页查询
     */
    PageUtilsDTO<SysRoleDTO> listPage(SysRoleVO sysRoleVO);

    /**
     * 通过角色ID查询角色
     *
     * @param roleId 角色ID
     * @return 角色对象信息
     */
    SysRole selectRoleById(Long roleId);

    /**
     * 新增
     */
    void insertRole(SysRoleVO sysRoleVO);

    /**
     * 校验角色名称是否唯一
     *
     * @param role 角色信息
     * @return 结果
     */
    boolean checkRoleNameUnique(SysRole role);

    /**
     * 校验角色权限是否唯一
     *
     * @param role 角色信息
     * @return 结果
     */
    boolean checkRoleKeyUnique(SysRole role);

    /**
     * 修改角色状态
     */
    void changeStatus(SysRoleVO sysRoleVO);

    /**
     * 查询详情信息
     */
    SysRoleDTO getInfo(Long roleId);

    /**
     * 修改
     */
    void edit(SysRoleVO sysRoleVO);

    /**
     * 查询已分配用户角色列表

     */
    List<SysUserDTO> selectAllocatedList(SysRoleVO sysRoleVO);

    /**
     * 取消授权
     */
    void deleteAuthUser(SysUserRoleVO sysUserRoleVO);

    /**
     * 删除角色
     */
    void deleteRoleById(Long roleId);
}
